home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib06.dsk / APPLE FINANCIER - PART III.bas < prev    next >
BASIC Source File  |  2023-02-26  |  14KB  |  281 lines

  1. 100  REM  ******************************
  2. 101  REM  ** APPLE FINANCIER- III     **
  3. 102  REM  **   (ARIES SOFTWARE)       **
  4. 103  REM  **   BY LARRY ABRAMS        **
  5. 104  REM  **  COPYRIGHT (C) 1981 BY   **
  6. 105  REM  **   MICRO-SPARC, INC.      **
  7. 106  REM  **   LINCOLN, MA 01773      **
  8. 107  REM  ******************************
  9. 108  REM     APPLESOFT BASIC
  10. 109  REM  -----------------------
  11. 110 :
  12. 200  REM  MENU
  13. 201  ONERR  GOTO 500
  14. 202  HOME : VTAB 2: HTAB 12: INVERSE : PRINT " SELECT ONE OF THE FOLLOWING ": NORMAL : GOSUB 400
  15. 210  PRINT  TAB( 9)"STRAIGHT LINE DEPRECIATION  <1>"
  16. 220  PRINT  TAB( 3)"VAR RATE - DECL BAL DEPRECIATION  <2>"
  17. 230  PRINT  TAB( 12);"ACCRUED SIMPLE INTEREST  <3>"
  18. 240  PRINT  TAB( 18);"COMPOUND INTEREST  <4>"
  19. 280  PRINT  TAB( 14)"DIRECT REDUCTION LOAN  <8>"
  20. 290  PRINT  TAB( 14);"AMORTIZATION SCHEDULE  <9>"
  21. 292  GOSUB 400: PRINT  TAB( 24);"<RETURN> TO QUIT"
  22. 293  PRINT : PRINT : PRINT  TAB( 30);"WHICH   ";: POKE  -16368,0: GET ANS$: PRINT ANS$
  23. 295 ANS =  VAL(ANS$): IF ANS = 0  THEN  END 
  24. 296  ON ANS GOTO 1000,2000,3000,4000,5000,6000,7000,8000,9000
  25. 298 :
  26. 300  REM  PRINT USING
  27. 302 P$ =  STR$( INT((P +.005) *100))
  28. 304  IF  LEN(P$) <3  THEN P$ =  LEFT$("000",(3 - LEN(P$))) +P$
  29. 305 PP$ =  LEFT$(P$,( LEN(P$) -2))
  30. 306  IF DP = 0  THEN P$ = PP$: GOTO 308
  31. 307 P$ = PP$ +"." + RIGHT$(P$,DP)
  32. 308 P$ =  RIGHT$("          " +P$,PL)
  33. 310  RETURN 
  34. 312 :
  35. 400  FOR DOT = 0 TO 39: PRINT ".";: NEXT DOT: RETURN 
  36. 402 :
  37. 500  REM  ERROR HANDLING ROUTINE
  38. 502  HOME : VTAB 5: INVERSE : PRINT "CHECK APPLESOFT MANUAL PG 136 FOR ERR": NORMAL 
  39. 504  PRINT : PRINT "ERROR IS NUMBER "; PEEK(222): PRINT "LOCATED IN LINE "; PEEK(218) + PEEK(219) *256: POKE 34,0: END 
  40. 505 :
  41. 600  REM  DAYS BETWEEN DATES
  42. 602  HOME : VTAB 5:A(4) = 0: PRINT "BEGINNING DATE  ";: GOSUB 606:A(4) = ND: PRINT 
  43. 604  PRINT "   ENDING DATE  ";: GOSUB 606:A(4) = ND -A(4): RETURN 
  44. 606  PRINT  CHR$(91);"YY"; CHR$(93);"YY.MMDD: ";: INPUT "";DTE
  45. 608 YRS =  INT(DTE):MOS =  INT((DTE -YRS) *100):DAYS =  INT((DTE -YRS -MOS/100) *1E4 +.5)
  46. 610 YRS = YRS -1900 *(YRS >99)
  47. 612  REM  ACTUAL DAYS (365)
  48. 613 YY = YRS -(MOS < = 2)
  49. 614 LD =  INT(.4 *MOS +2.3) *(MOS >2)
  50. 616 ND = 365 *YRS +31 *(MOS -1) +DAYS + INT(YY/4) -LD: RETURN 
  51. 618 :
  52. 620  REM  BANKING YEAR (360)
  53. 622 LD = DAYS
  54. 624  IF DAYS < >31  THEN 630
  55. 626  IF A(4) >0  AND PDAYS <30  THEN 630
  56. 628 LD = 30
  57. 630 ND = 360 *YRS +30 *MOS +LD:PDAYS = DAYS: RETURN 
  58. 1000  REM  STRAIGHT LINE DEPRECIATION
  59. 1002 :
  60. 1004  REM  PROGRAM INSTRUCTIONS
  61. 1006  CLEAR :DP = 0: HOME : VTAB 10
  62. 1008  PRINT "INSTRUCTIONS? ";: POKE  -16368,0: GET ANS$: IF  LEFT$(ANS$,1) < >"Y"  THEN  HOME : VTAB 10: GOTO 1102
  63. 1010  HOME : VTAB 5: PRINT "  STRAIGHT LINE DEPRECIATION SCHEDULE": GOSUB 400
  64. 1012  PRINT "THE ANNUAL DEPRECIATION ALLOWANCE USING"
  65. 1014  PRINT "THIS METHOD IS DETERMINED BY DIVIDING"
  66. 1016  PRINT "THE COST (STARTING BOOK VALUE) LESS ITS"
  67. 1018  PRINT "ESTIMATED SALVAGE VALUE BY ITS USEFUL"
  68. 1020  PRINT "LIFE EXPECTANCY.  THAT IS:": PRINT 
  69. 1022  INVERSE : PRINT " DEPRECIATION ";: NORMAL : PRINT "=": PRINT 
  70. 1024  PRINT "(START BK VAL - SALVAGE VAL) / (LIFE)": PRINT 
  71. 1026 :
  72. 1100  REM  INPUT STARTING,SALVAGE,LIFE
  73. 1102  PRINT "1. STARTING BOOK VALUE ";: IF FLAG  THEN  PRINT A(1): GOTO 1106
  74. 1104  INPUT A(1)
  75. 1106  PRINT "2. SALVAGE VALUE"; TAB( 24);: IF FLAG  THEN  PRINT A(2): GOTO 1110
  76. 1108  INPUT A(2)
  77. 1110  PRINT "3. LIFE EXPECTANCY"; TAB( 24);: IF FLAG  THEN  PRINT A(3): GOTO 1114
  78. 1112  INPUT A(3):FLAG = 1
  79. 1114  PRINT : PRINT "ANY CHANGES? ";: POKE  -16368,0: GET ANS$: PRINT ANS$: IF  LEFT$(ANS$,1) = "N"  THEN 1118
  80. 1116  PRINT : INPUT "WHICH ONE? ";W: PRINT "CHANGE PART ";W;" TO: ";: INPUT A(W): HOME : VTAB 10: GOTO 1102
  81. 1118 BKVLUE = A(1):SALVAGE = A(2):LFE = A(3)
  82. 1120  PRINT : PRINT "DISPLAY ENTIRE SCHEDULE? ";: POKE  -16368,0: GET ANS$: PRINT ANS$
  83. 1122  IF  LEFT$(ANS$,1) = "Y"  THEN I = 0: GOTO 1202
  84. 1124  PRINT "WHICH YEARS (START,END)";: INPUT I,J
  85. 1126 :
  86. 1200  REM  OUTPUT HEADINGS
  87. 1202  HOME : PRINT  TAB( 5);"DEPR"; TAB( 14);"REMAIN"; TAB( 25);"REMAIN"; TAB( 35);"TOTAL"
  88. 1204  PRINT "YR"; TAB( 4);"AMOUNT"; TAB( 12);"DEPR VALUE"; TAB( 23);"BOOK VALUE"; TAB( 35);"DEPREC";
  89. 1206  GOSUB 400: POKE 34,3
  90. 1208 :
  91. 1300  REM  CALCULATIONS/OUTPUT
  92. 1302  IF   NOT I  THEN I = 1:J = LFE
  93. 1304  IF J >LFE  THEN J = LFE
  94. 1306  FOR K = I TO J
  95. 1308 DEP = (BKVLUE -SALVAGE)/LFE:TDEP = K *DEP:RDV = (LFE -K) *DEP:RBV = RDV +SALVAGE
  96. 1310  PRINT  SPC( 1 -(K >9));K; TAB( 4);:PL = 7:P = DEP: GOSUB 300: PRINT P$;:PL = 10:P = RDV: GOSUB 300: PRINT P$;:P = RBV: GOSUB 300: PRINT P$;:P = TDEP: GOSUB 300: PRINT P$;: REM  
  97. 1312  NEXT K
  98. 1314 :
  99. 1400  REM  PROGRAM ENDING
  100. 1402  PRINT : VTAB 24: POKE 34,0
  101. 1404  PRINT "ANOTHER RUN? ";: POKE  -16368,0: GET ANS$: PRINT ANS$: IF  LEFT$(ANS$,1) = "Y"  THEN  HOME : VTAB 12: GOTO 1102
  102. 1406  GOTO 200: REM  RETURN TO MENU
  103. 1408 :
  104. 2000  REM  VARIABLE RATE - DECLINING BALANCE DEPRECIATION
  105. 2002 :
  106. 2004  REM  PROGRAM INSTRUCTIONS
  107. 2006  CLEAR :DP = 0: HOME : VTAB 10
  108. 2008  PRINT "INSTRUCTIONS? ";: POKE  -16368,0: GET ANS$: IF  LEFT$(ANS$,1) < >"Y"  THEN  HOME : VTAB 10: GOTO 2102
  109. 2010  HOME : VTAB 2: PRINT  TAB( 4)"VARIABLE RATE - DECLINING BALANCE": PRINT  TAB( 10)"DEPRECIATION SCHEDULE": GOSUB 400
  110. 2012  PRINT "THIS METHOD PROVIDES FOR MORE DEPRECIA-": PRINT "TION IN EARLIER YEARS AND DECREASING": PRINT "DEPRECIATION IN LATER YEARS."
  111. 2014  PRINT "THE VARIABLE RATE IS A FACTOR (E.G. 1.5": PRINT "OR 1.25) THAT'S THE SAME AS A DECLINING BALANCE PERCENTAGE."
  112. 2016  PRINT 
  113. 2018  PRINT "THIS SCHEDULE WILL ALSO GIVE THE CROSS-": PRINT "OVER POINT (HI-LIGHTED), WHERE THE": PRINT "SWITCH FROM THIS METHOD TO THE STRAIGHT"
  114. 2020  PRINT "LINE METHOD SHOULD BE MADE.  AT THIS": PRINT "POINT, STRAIGHT LINE DEPRECIATION IS"
  115. 2022  PRINT "GREATER THAN THAT BY THE DECLINING": PRINT "BALANCE METHOD."
  116. 2024  PRINT 
  117. 2026 :
  118. 2100  REM  INPUT STARTING,SALVAGE,LIFE,FACT
  119. 2102  PRINT "1. STARTING BOOK VALUE ";: IF FLAG  THEN  PRINT A(1): GOTO 2106
  120. 2104  INPUT A(1)
  121. 2106  PRINT "2. SALVAGE VALUE"; TAB( 24);: IF FLAG  THEN  PRINT A(2): GOTO 2110
  122. 2108  INPUT A(2)
  123. 2110  PRINT "3. LIFE EXPECTANCY"; TAB( 24);: IF FLAG  THEN  PRINT A(3): GOTO 2114
  124. 2112  INPUT A(3)
  125. 2114  PRINT "4. RATE FACTOR"; TAB( 24);: IF FLAG  THEN  PRINT A(4): GOTO 2118
  126. 2116  INPUT A(4):FLAG = 1
  127. 2118  PRINT : PRINT "ANY CHANGES? ";: POKE  -16368,0: GET ANS$: PRINT ANS$: IF  LEFT$(ANS$,1) = "N"  THEN 2122
  128. 2120  PRINT : INPUT "WHICH ONE? ";W: PRINT "CHANGE PART ";W;" TO: ";: INPUT A(W): HOME : VTAB 10: GOTO 2102
  129. 2122 BKVLUE = A(1):SALVAGE = A(2):LFE = A(3):FACT = A(4)
  130. 2124  PRINT : PRINT "DISPLAY ENTIRE SCHEDULE?";: POKE  -16368,0: GET ANS$: PRINT ANS$
  131. 2126  IF  LEFT$(ANS$,1) = "Y"  THEN I = 0: GOTO 2202
  132. 2128  PRINT "WHICH YEARS (START,END)";: INPUT I,J
  133. 2130 :
  134. 2200  REM  OUTPUT HEADING
  135. 2202  HOME : PRINT  TAB( 5);"DEPR"; TAB( 14);"REMAIN"; TAB( 25);"REMAIN"; TAB( 35);"TOTAL"
  136. 2204  PRINT "YR"; TAB( 4);"AMOUNT"; TAB( 12);"DEPR VALUE"; TAB( 23);"BOOK VALUE"; TAB( 35);"DEPREC"
  137. 2206  GOSUB 400: POKE 34,3
  138. 2208 :
  139. 2300  REM  CALCULATION/OUTPUT
  140. 2302  IF   NOT I  THEN I = 1:J = LFE
  141. 2304  IF J >LFE  THEN J = LFE
  142. 2306  FOR K = 1 TO J
  143. 2308 DEP = (1 -FACT/LFE) ^(K -1) *(FACT/LFE) *BKVLUE:TDEP = (1 -((1 -FACT/LFE) ^(K))) *BKVLUE
  144. 2310 RDV = BKVLUE -SALVAGE -TDEP:RBV = RDV +SALVAGE
  145. 2312  IF (LFE -K) *DEP <RDV  THEN  INVERSE 
  146. 2314  PRINT  SPC( 1 -(K >9));K; TAB( 4);:PL = 7:P = DEP: GOSUB 300: PRINT P$;:PL = 10:P = RDV: GOSUB 300: PRINT P$;:P = RBV: GOSUB 300: PRINT P$;:P = TDEP: GOSUB 300: PRINT P$;: REM 
  147. 2316  NEXT K: NORMAL 
  148. 2318 :
  149. 2400  REM  PROGRAM ENDING
  150. 2402  PRINT : VTAB 24: POKE 34,0
  151. 2404  PRINT "ANOTHER RUN? ";: POKE  -16368,0: GET ANS$: PRINT ANS$: IF  LEFT$(ANS$,1) = "Y"  THEN  HOME : VTAB 12: GOTO 2102
  152. 2406  GOTO 200: REM  RETURN TO MENU
  153. 2408 :
  154. 3000  REM  ACCRUED INTEREST
  155. 3002  CLEAR :DP = 2
  156. 3004  HOME : VTAB 5: PRINT "ENTER A ZERO FOR ITEM TO CALCULATE:": PRINT 
  157. 3006  PRINT "1. BEGINNING AMOUNT"; TAB( 28);: IF FLAG  THEN  PRINT A(1): GOTO 3010
  158. 3008  INPUT A(1)
  159. 3010  PRINT "2. ANNUAL INTEREST RATE %"; TAB( 28);: IF FLAG  THEN  PRINT A(2): GOTO 3014
  160. 3012  INPUT A(2)
  161. 3014  PRINT "3. FUTURE AMOUNT"; TAB( 28);: IF FLAG  THEN  PRINT A(3): GOTO 3022
  162. 3016  INPUT A(3)
  163. 3018 FLAG = 0: VTAB 10: CALL  -958: PRINT : PRINT "DO YOU WISH TO CALCULATE THE NUMBER": INPUT "OF DAYS BETWEEN TWO DATES? ";ANS$
  164. 3020  IF  LEFT$(ANS$,1) = "Y"  THEN FLAG = 1: GOSUB 600: GOTO 3004
  165. 3022  VTAB 10: CALL  -958: PRINT "4. NUMBER OF DAYS"; TAB( 28);: IF FLAG  THEN  PRINT A(4): GOTO 3026
  166. 3024  INPUT A(4):FLAG = 1
  167. 3026  VTAB 15: INVERSE : PRINT " TYPE 'END' TO RETURN TO MENU ": NORMAL : PRINT : INPUT "ANY CHANGES? ";ANS$
  168. 3028  IF  LEFT$(ANS$,1) = "N"  THEN 3102
  169. 3030  IF  LEFT$(ANS$,1) = "E"  THEN 200
  170. 3032  INPUT "WHICH PART? ";W: IF W = 4  THEN 3018
  171. 3034  PRINT "CHANGE PART ";W;" TO: ";: INPUT A(W): GOTO 3004
  172. 3036 :
  173. 3100  REM  CALCULATION SECTION
  174. 3102  IF A(1) = 0  THEN A(1) = A(3)/(1 +(A(2)/36500 *A(4))):A(1) =  INT(A(1) *100 +.5)/100
  175. 3104  IF A(2) = 0  THEN A(2) = (A(3) -A(1)) *36500/(A(1) *A(4)):A(2) =  INT(A(2) *100 +.5)/100
  176. 3106  IF A(3) = 0  THEN A(3) = A(2)/36500 *A(1) *A(4):A(3) =  INT((A(1) +A(3)) *100 +.5)/100
  177. 3108  IF A(4) = 0  THEN A(4) = (A(3) -A(1))/(A(1) *A(2)/36500):A(4) =  INT(A(4) +.5)
  178. 3110  GOTO 3004
  179. 3112 :
  180. 4000  REM  COMPOUND INTEREST SECTION
  181. 4002  CLEAR 
  182. 4004  HOME : VTAB 5: PRINT "1. AMOUNT TO BE COMPOUNDED"; TAB( 30);: IF FLAG  THEN  PRINT A(1): GOTO 4008
  183. 4006  INPUT A(1)
  184. 4008  PRINT "2. YRLY INTEREST RATE (MAX)"; TAB( 30);: IF FLAG  THEN  PRINT A(2): GOTO 4012
  185. 4010  INPUT A(2)
  186. 4012  PRINT "3. CHANGE IN INTEREST RATE"; TAB( 30);: IF FLAG  THEN  PRINT A(3): GOTO 4020
  187. 4014  INPUT A(3)
  188. 4016 FLAG = 0: VTAB 8: CALL  -958: PRINT : PRINT "DO YOU WISH TO CALCULATE THE NUMBER": INPUT "OF DAYS BETWEEN TWO DATES? ";ANS$
  189. 4018  IF  LEFT$(ANS$,1) = "Y"  THEN FLAG = 1: GOSUB 600: GOTO 4004
  190. 4020  VTAB 8: CALL  -958: PRINT "4. NUMBER OF DAYS"; TAB( 30);: IF FLAG  THEN  PRINT A(4): GOTO 4024
  191. 4022  INPUT A(4):FLAG = 1
  192. 4024  VTAB 15: INVERSE : PRINT " TYPE 'END' TO RETURN TO MENU ": NORMAL : PRINT : INPUT "ANY CHANGES? ";ANS$
  193. 4026  IF  LEFT$(ANS$,1) = "N"  THEN 4034
  194. 4028  IF  LEFT$(ANS$,1) = "E"  THEN 200
  195. 4030  INPUT "WHICH PART? ";W: IF W = 4  THEN 4016
  196. 4032  PRINT "CHANGE PART ";W;" TO: ";: INPUT A(W): GOTO 4004
  197. 4034 AMT = A(1):IR = A(2):IC = A(3):DAYS = A(4)
  198. 4036 CP(1) = 360:CP(2) = 365:CP(3) = 12:CP(4) = 4
  199. 4038 :
  200. 4100  REM  OUTPUT HEADINGS
  201. 4102  HOME : VTAB 2: INVERSE : PRINT " COMPOUNDING $";AMT;" FOR ";DAYS;" DAYS. ": NORMAL : PRINT 
  202. 4104  PRINT "PCNT"; TAB( 7);"360 DAY"; TAB( 16);"365 DAY"; TAB( 26);"MONTH"; TAB( 34);"QUARTER";
  203. 4106  GOSUB 400: PRINT 
  204. 4108 :
  205. 4200  REM  CALCULATIONS/OUTPUT
  206. 4202 PL = 4:DP = 0:P = IR *100: GOSUB 300: PRINT P$;
  207. 4204  FOR X = 1 TO 4
  208. 4206 I = IR/(CP(X) *100)
  209. 4208 TIME =  INT(DAYS/ INT(365/CP(X)))
  210. 4210 FUTAMT = AMT *(1 +I) ^TIME
  211. 4212 PL = 9:DP = 2:P = FUTAMT
  212. 4214  GOSUB 300: PRINT P$;
  213. 4216  NEXT X
  214. 4218 :
  215. 4220  REM  TEST FOR PROGRAM END
  216. 4222 IR = IR -IC: IF  PEEK(37) <21  AND IR >0  THEN 4202
  217. 4224  VTAB 24: HTAB 26: PRINT "PRESS ANY KEY ";: CALL  -756: GOTO 4004
  218. 4226 :
  219. 8000  REM  DIRECT REDUCTION LOAN
  220. 8002 :
  221. 8004  REM  PGM INITIALIZATION
  222. 8006  CLEAR :DP = 2
  223. 8007 :
  224. 8100  REM  MENU / INPUT SECTION
  225. 8102  HOME : VTAB 5
  226. 8104  PRINT "1. MAX BORROW AMOUNT"; TAB( 25);: IF FLAG  THEN  PRINT A(1): GOTO 8108
  227. 8106  INPUT A(1)
  228. 8108  PRINT "2. CHANGE IN AMOUNT"; TAB( 25);: IF FLAG  THEN  PRINT A(2): GOTO 8112
  229. 8110  INPUT A(2)
  230. 8112  PRINT "3. MAX INTEREST RATE"; TAB( 25);: IF FLAG  THEN  PRINT A(3): GOTO 8116
  231. 8114  INPUT A(3)
  232. 8116  PRINT "4. CHANGE IN INT RATE"; TAB( 25);: IF FLAG  THEN  PRINT A(4): GOTO 8120
  233. 8118  INPUT A(4)
  234. 8120  PRINT "5. LOAN TERM (MONTHS)"; TAB( 25);: IF FLAG  THEN  PRINT A(5): GOTO 8124
  235. 8122  INPUT A(5):FLAG = 1
  236. 8124  PRINT : INVERSE : PRINT "TYPE 'END' TO RETURN TO MENU ": NORMAL : VTAB 18: INPUT "ANY CHANGES? ";Y$
  237. 8126  IF  LEFT$(Y$,1) = "N"  THEN 8146
  238. 8128  IF Y$ = "END"  THEN 200
  239. 8130  INPUT "WHICH ONE? ";W: PRINT "CHANGE PART ";W;" TO ";: INPUT A(W): GOTO 8102
  240. 8132 :
  241. 8134  REM  PAYMENT CALCULATION
  242. 8136 I = J/1200
  243. 8138 PMT = (K *I)/(1 -(1 +I) ^( -A(5)))
  244. 8140  RETURN 
  245. 8142 :
  246. 8144  REM  OUTPUT HEADING SECTION
  247. 8146  HOME : HTAB 13: INVERSE : PRINT " TERM: ";A(5);" MONTHS ": NORMAL 
  248. 8148  VTAB 2: PRINT "PRCNT";
  249. 8150  FOR K = A(1) -4 *A(2) TO A(1)  STEP A(2):P$ =  STR$( INT(K)):PL = 7: GOSUB 308: PRINT P$;: NEXT K
  250. 8152  GOSUB 400
  251. 8154 :
  252. 8156  REM  MAIN PROGRAM
  253. 8158 J = A(3)
  254. 8160 P = J:PL = 5: GOSUB 302: PRINT P$;
  255. 8162  FOR K = A(1) -4 *A(2) TO A(1)  STEP A(2)
  256. 8164  GOSUB 8136
  257. 8166 P = PMT:PL = 7: GOSUB 302: PRINT P$;
  258. 8168  NEXT K
  259. 8170 J = J -A(4)
  260. 8172  IF  PEEK(37) <22  AND J >0  THEN 8160
  261. 8174  VTAB 24: INVERSE : PRINT " ANY KEY FOR MENU ";: NORMAL 
  262. 8176  CALL  -756
  263. 8178  GOTO 8102
  264. 8180 :
  265. 9000  REM  AMORTIZATION SCHEDULE
  266. 9001  HOME : VTAB 5: INPUT "YEARLY INTEREST RATE % ";I:I = I/1200: INPUT "MONTHLY PAYMENT ";PMT: INPUT "INITIAL LOAN AMOUNT ";PV
  267. 9002  HOME :DP = 2
  268. 9003  PRINT  TAB( 5);"PAID TO"; TAB( 15);"PAID"; TAB( 22);"REMAIN"; TAB( 33);"TOTAL"
  269. 9004  PRINT "NO"; TAB( 5);"PRINCIP"; TAB( 14);"TO INT"; TAB( 22);"BALANCE"; TAB( 32);"INTEREST": FOR DOT = 0 TO 39: PRINT ".";: NEXT DOT: POKE 34,3
  270. 9005 OB = PV:K = 1
  271. 9006 A = (1 +I) ^( -K)
  272. 9007 NB = (((A -1)/I) *PMT +PV)/A
  273. 9008  IF NB < = 0  THEN 9014
  274. 9009 PRIN = OB -NB:K$ =  STR$(K):K$ = K$ +"  ": PRINT  LEFT$(K$,3);:P = PRIN:PL = 7: GOSUB 300: PRINT P$;
  275. 9010 IN = PMT -PRIN:P = IN:PL = 9: GOSUB 300: PRINT P$;:P = NB:PL = 10: GOSUB 300: PRINT P$;
  276. 9011 TIN = K *PMT -PV +NB:P = TIN: GOSUB 300: PRINT P$
  277. 9012 K = K +1:OB = NB
  278. 9013  IF  PEEK(37) < >23  THEN 9006
  279. 9014  VTAB 24: INVERSE : PRINT " ESC TO EXIT OR ANY KEY TO CONTINUE ";: NORMAL 
  280. 9015  POKE  -16368,0: GET Z$: IF Z$ < > CHR$(27)  THEN  HOME : GOTO 9006
  281. 9016  POKE 34,0: GOTO 200